/*
 * Copyright (c) 2022 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { FeatureMatcher } from '../FeatureMatcher.js';
import { IsEqual } from '../core/IsEqual.js';
export class CharSequenceLength extends FeatureMatcher {
    constructor(lengthMatcher) {
        super(lengthMatcher, "a CharSequence with length", "length");
    }
    featureValueOf(actual) {
        return actual.length;
    }
    /**
       * Creates a matcher of {@link CharSequence} that matches when a char sequence has the given length
       * For example:
       *
       * <pre>
       * assertThat("text", hasLength(4))
       * </pre>
       *
       * @param length the expected length of the string
       * @return The matcher.
       */
    static hasLength(length) {
        return new CharSequenceLength(IsEqual.equalTo(length));
    }
    /**
        * Creates a matcher of {@link CharSequence} that matches when a char sequence has the given length
        * For example:
        *
        * <pre>
        * assertThat("text", hasLength(lessThan(4)))
        * </pre>
        *
        * @param lengthMatcher the expected length of the string
        * @return The matcher.
        */
    static hasLengthMatcher(lengthMatcher) {
        return new CharSequenceLength(lengthMatcher);
    }
}
